package dominio;

import java.lang.annotation.Inherited;
import java.util.ArrayList;
import java.util.Date;

public class Pessoa {
	
	public static int contador = 0;
	
	private int id;
	private String nome;
	private Documento identificador;
	private String email;
	private String nomeDaMae;
	private String nomeDoPai;
	private String sexo;
	private Date dataDeNascimento;
	private String estadoCivil;
	private String cor;
	private String raca;
	private Naturalidade naturalidade;
	private Endereco endereco;
	private Telefone telefone;
	private Boolean temFilhos;
	private ArrayList<Documento> documentos;
	private ArrayList<Endereco> enderecos;
	private ArrayList<Telefone> telefones;

	public Pessoa() {
		this.documentos = new ArrayList<Documento>();
		this.enderecos = new ArrayList<Endereco>();
		this.telefones = new ArrayList<Telefone>();
		this.dataDeNascimento = new Date();
		this.naturalidade = new Naturalidade();
	}

	public Pessoa(int id, String nome, Documento identificador, String email,
			String nomeDaMae, String nomeDoPai, String sexo,
			Date dataDeNascimento, String estadoCivil, String cor, String raca,
			Naturalidade naturalidade, Endereco endereco, Telefone telefone, Boolean temFilhos) {
		super();
		this.id = id;
		this.nome = nome;
		this.identificador = identificador;
		this.email = email;
		this.nomeDaMae = nomeDaMae;
		this.nomeDoPai = nomeDoPai;
		this.sexo = sexo;
		this.dataDeNascimento = dataDeNascimento;
		this.estadoCivil = estadoCivil;
		this.cor = cor;
		this.raca = raca;
		this.naturalidade = naturalidade;
		this.endereco = endereco;
		this.telefone = telefone;
		this.temFilhos = temFilhos;
		this.documentos = new ArrayList<Documento>();
	}
	
	public void addDocumento(Documento d) {
		documentos.add(d);
	}
	
	/**
	 * {@inheritDoc}
	 */
	public boolean equals(Object obj) {
		return this.id == ((Pessoa) obj).getId();
	}

	public int getId() {
		return id;
	}

	public void setId(int id) {
		this.id = id;
	}

	public String getNome() {
		return nome;
	}

	public void setNome(String nome) {
		this.nome = nome;
	}

	public Documento getIdentificador() {
		return identificador;
	}

	public void setIdentificador(Documento identificador) {
		this.identificador = identificador;
	}

	public String getEmail() {
		return email;
	}

	public void setEmail(String email) {
		this.email = email;
	}

	public String getNomeDaMae() {
		return nomeDaMae;
	}

	public void setNomeDaMae(String nomeDaMae) {
		this.nomeDaMae = nomeDaMae;
	}

	public String getNomeDoPai() {
		return nomeDoPai;
	}

	public void setNomeDoPai(String nomeDoPai) {
		this.nomeDoPai = nomeDoPai;
	}

	public String getSexo() {
		return sexo;
	}

	public void setSexo(String sexo) {
		this.sexo = sexo;
	}

	public Date getDataDeNascimento() {
		return dataDeNascimento;
	}

	public void setDataDeNascimento(Date dataDeNascimento) {
		this.dataDeNascimento = dataDeNascimento;
	}

	public String getEstadoCivil() {
		return estadoCivil;
	}

	public void setEstadoCivil(String estadoCivil) {
		this.estadoCivil = estadoCivil;
	}

	public String getCor() {
		return cor;
	}

	public void setCor(String cor) {
		this.cor = cor;
	}

	public String getRaca() {
		return raca;
	}

	public void setRaca(String raca) {
		this.raca = raca;
	}

	public Naturalidade getNaturalidade() {
		return naturalidade;
	}

	public void setNaturalidade(Naturalidade naturalidade) {
		this.naturalidade = naturalidade;
	}

	public Endereco getEndereco() {
		return endereco;
	}

	public void setEndereco(Endereco endereco) {
		this.endereco = endereco;
	}

	public Telefone getTelefone() {
		return telefone;
	}

	public void setTelefone(Telefone telefone) {
		this.telefone = telefone;
	}

	public Boolean getTemFilhos() {
		return temFilhos;
	}

	public void setTemFilhos(Boolean temFilhos) {
		this.temFilhos = temFilhos;
	}

	public ArrayList<Documento> getDocumentos() {
		return documentos;
	}

	public void setDocumentos(ArrayList<Documento> documentos) {
		this.documentos = documentos;
	}

	public ArrayList<Endereco> getEnderecos() {
		return enderecos;
	}

	public void setEnderecos(ArrayList<Endereco> enderecos) {
		this.enderecos = enderecos;
	}

	public ArrayList<Telefone> getTelefones() {
		return telefones;
	}

	public void setTelefones(ArrayList<Telefone> telefones) {
		this.telefones = telefones;
	}

	public void addTelefone(Telefone telefone) {
		telefones.add(telefone);
	}

	public void addEndereco(Endereco endereco) {
		enderecos.add(endereco);
	}
	
}
